From 2f6d51b68b24e6e4c7799bc7abf594790bdc8833 Mon Sep 17 00:00:00 2001 From: Ewan Mellor Date: Fri, 9 Mar 2007 16:04:19 +0000 Subject: [PATCH] This patch fixes two problems with sending and receiving of (arrays of) structures. The first one allows to determine the size of a member when parsing a 'set'. The cast in the second part fixes the address calculation when serializing an array. Signed-off-by: Stefan Berger --- tools/libxen/src/xen_common.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/libxen/src/xen_common.c b/tools/libxen/src/xen_common.c index c6e2181850..5d72cab177 100644 --- a/tools/libxen/src/xen_common.c +++ b/tools/libxen/src/xen_common.c @@ -890,6 +890,9 @@ static size_t size_of_member(const abstract_type *type) case REF: return sizeof(arbitrary_record_opt *); + case STRUCT: + return type->struct_size; + default: assert(false); } @@ -1215,7 +1218,8 @@ add_struct_value(const struct abstract_type *type, void *value, for (size_t i = 0; i < set_val->size; i++) { - void *member_value = set_val->contents + (i * member_size); + void *member_value = (char *)set_val->contents + + (i * member_size); add_struct_value(member_type, member_value, add_unnamed_value, NULL, data_node); } -- 2.30.2